package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;

public class RHH_BONO_USUARIO {

    private int ID;
    private int ID_USUARIO;
    private int ID_BONO;
    private String MOTIVO;    
    private Double MONTO;
    private Date FECHA_INI;
    private Date FECHA_FIN;
    private Conexion con = null;

    public RHH_BONO_USUARIO(Conexion con) {
        this.con = con;
    }

    public RHH_BONO_USUARIO(int ID,int ID_USUARIO, int ID_BONO, String MOTIVO, Double MONTO, Date FECHA_INI, Date FECHA_FIN) {
        this.ID_USUARIO = ID_USUARIO;
        this.ID_BONO = ID_BONO;
        this.MOTIVO = MOTIVO;
        this.MONTO = MONTO;
        this.FECHA_INI = FECHA_INI;
        this.FECHA_FIN = FECHA_FIN;
    }

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_BONO_USUARIO (ID, ID_USUARIO, ID_BONO, MOTIVO, MONTO, FECHA_INI, FECHA_FIN) VALUES (0," + ID_USUARIO + "," + ID_BONO + ",'" + MOTIVO + "'," + MONTO + ",to_date('" + getFECHA_INI() + "','MM/yyyy'),to_date('" + getFECHA_FIN() + "','MM/yyyy'))";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_BONO_USUARIO_SEQ.currval AS ID from dual";        
        ResultSet rs = con.EjecutarConsulta(consulta);
        if(rs.next())
            return rs.getInt("ID");
        else
            return 0;
    }

    public List<RHH_BONO_USUARIO> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_BONO_USUARIO";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_BONO_USUARIO> lista = Cargar(rs);
        return lista;
    }
    public boolean eliminar(int id) throws SQLException {
        String consulta = "delete from BROKER.RHH_BONO_USUARIO where ID="+id;
        con.EjecutarSentencia(consulta);
        return true;
    }
    
    public List<RHH_BONO_USUARIO> TodosxUsuario(int idusr) throws SQLException {
        String consulta = "select * from BROKER.RHH_BONO_USUARIO where ID_USUARIO = "+idusr;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_BONO_USUARIO> lista = Cargar(rs);
        return lista;
    }
    
    public List<RHH_BONO_USUARIO> TodosxUsuarioconImpuesto(int idusr) throws SQLException {
        String consulta = "SELECT RHH_BONO_USUARIO.*\n" +
                        "  FROM BROKER.RHH_BONO_USUARIO, BROKER.RHH_BONO\n" +
                        " WHERE     (RHH_BONO_USUARIO.ID_BONO = RHH_BONO.ID)\n" +
                        "       AND (RHH_BONO_USUARIO.ID_USUARIO = "+idusr+")\n" +
                        "       AND (RHH_BONO.DEDUCIBLE_IMPUESTO = 0)";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_BONO_USUARIO> lista = Cargar(rs);
        return lista;
    }
    
    public List<RHH_BONO_USUARIO> TodosxUsuarioSinImpuesto(int idusr) throws SQLException {
        String consulta = "SELECT RHH_BONO_USUARIO.*\n" +
                        "  FROM BROKER.RHH_BONO_USUARIO, BROKER.RHH_BONO\n" +
                        " WHERE     (RHH_BONO_USUARIO.ID_BONO = RHH_BONO.ID)\n" +
                        "       AND (RHH_BONO_USUARIO.ID_USUARIO = "+idusr+")\n" +
                        "       AND (RHH_BONO.DEDUCIBLE_IMPUESTO = 1)";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_BONO_USUARIO> lista = Cargar(rs);
        return lista;
    }

    public List<RHH_BONO_USUARIO> Cargar(ResultSet rs) throws SQLException {
        List<RHH_BONO_USUARIO> lista = new ArrayList<RHH_BONO_USUARIO>();
        while (rs.next()) {
            RHH_BONO_USUARIO objeto = new RHH_BONO_USUARIO(con);
            objeto.setID_USUARIO(rs.getInt("ID_USUARIO"));
            objeto.setID_BONO(rs.getInt("ID_BONO"));
            objeto.setMOTIVO(rs.getString("MOTIVO"));
            objeto.setMONTO(rs.getDouble("MONTO"));
            objeto.setFECHA_INI(rs.getDate("FECHA_INI"));
            objeto.setFECHA_FIN(rs.getDate("FECHA_FIN"));
            objeto.setID(rs.getInt("ID"));
            lista.add(objeto);
        }
        return lista;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    
    
    public int getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(int ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public int getID_BONO() {
        return ID_BONO;
    }

    public void setID_BONO(int ID_BONO) {
        this.ID_BONO = ID_BONO;
    }

    public String getMOTIVO() {
        return MOTIVO;
    }

    public void setMOTIVO(String MOTIVO) {
        this.MOTIVO = MOTIVO;
    }

    public Double getMONTO() {
        return MONTO;
    }

    public void setMONTO(Double MONTO) {
        this.MONTO = MONTO;
    }

    public String getFECHA_INI() {
        SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
        return sdf.format(FECHA_INI);
    }
    public Date getFECHA_INId() {        
        return FECHA_INI;
    }

    public void setFECHA_INI(Date FECHA_INI) {
        this.FECHA_INI = FECHA_INI;
    }

    public String getFECHA_FIN() {
        SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
        return sdf.format(FECHA_FIN);
    }
    public Date getFECHA_FINd() {
        return FECHA_FIN;
    }

    public void setFECHA_FIN(Date FECHA_FIN) {
        this.FECHA_FIN = FECHA_FIN;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
